/******************************************************************************
 *      Mestrado em Ciência da Computação - UFMS
 *		Redes de Computadores - Prof. Dr. Ronaldo Alves Ferreira
 *		Alunos: Geraldo Landre, Marcel Tolentino, Vinícius Bueno
 *****************************************************************************/

#ifndef BASE_H
#define BASE_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#include <errno.h>

#include "vstring.h"
#include "request.h"


/*
	Funções úteis e de propósitos gerais que podem ser utilizadas
	em qualquer local do código.
*/
/******************************************************************************
 *        read_string
 * parametros:
 *		string: ponteiro para caracteres que guardará a string lida.
 *
 * recebe uma string, faz a leitura necessária em um vetor de caracteres e
 * aloca a memória necessária para copiar os caracteres lidos para a string.
 *****************************************************************************/
void read_string(char** string);

/*	Função que aloca memória e em caso de erro
	finaliza a execução do programa	*/
void* safe_alloc(unsigned int size);

/*  Função para desalocar memória de forma segura */
void safe_free(void *pt);

/*	Seta o seed do rand */
void set_rand_seed(int seed);
/*	Função que retorna um número randômico
	Parâmetro:
		- int range: número aleatório de 1 a range	*/
int get_rand_number(int range, int seed);
/*	Chama a função get_rand_number passando time(NULL) como semente	*/
int get_random_number(int range);

/*	Função que faz o programa esperar.
	Parâmetro:
		- int seconds: segundos a esperar */
void wait_(int seconds);

char* get_extension(char *nome);

int hexa_to_dec(vstring *str,int *var);

int string_to_integer(vstring *str,int *var);

void integer_to_string(vstring **c,int num);

void get_hexadecimal(vstring **v,int num);

int convert_month(vstring *mon);


#endif
